home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Shareware Grab Bag
/
Shareware Grab Bag.iso
/
004
/
astr0106.arc
/
ASTRO106.BAS
< prev
next >
Wrap
BASIC Source File
|
1986-02-23
|
12KB
|
352 lines
10 DEFDBL A-Z
12 WT=1721027!
14 YT=2415020!
16 XX=6.6460656#
18 ZZ=2400.051262#
20 DEF FNRAD(X)=X*.0174532928#
30 DEF FNDEG(X)=X*57.2957787#
40 DEF FNARCSIN(X)=ATN(X/SQR(1-X^2))
50 DEF FNARCCOS(X)=1.570796-ATN(X/SQR(1-X^2))
60 Q=0
70 CLS:LOCATE 4,7:PRINT "Select the Planet desired:"
80 LOCATE 6,15:PRINT "1 - Mercury"
90 LOCATE 8,15:PRINT "2 - Venus"
100 LOCATE 10,15:PRINT "3 - Mars"
110 LOCATE 12,15:PRINT "4 - Jupiter"
120 LOCATE 14,15:PRINT "5 - Saturn"
130 LOCATE 16,15:PRINT "6 - Neptune"
140 LOCATE 18,15:PRINT "7 - Uranus"
150 LOCATE 21,7:INPUT "Type number selection here: ",P
160 IF P=1 THEN GOSUB 10000
170 IF P=2 THEN GOSUB 10100
180 IF P=3 THEN GOSUB 10200
190 IF P=4 THEN GOSUB 10300
200 IF P=5 THEN GOSUB 10400
210 IF P=6 THEN GOSUB 10600
220 IF P=7 THEN GOSUB 10500
230 CLS:LOCATE 8,7:PRINT "For What Date?"
240 LOCATE 10,15:INPUT "Month (##): ",MM
250 UT=MM
260 LOCATE 12,15:INPUT "Day (##) : ",DD
270 LOCATE 14,15:INPUT "Year(####): ",YEAR
275 CLS
280 IF MM<2 THEN MM=(((MM-1)*63)/2)
290 IF MM>1 THEN MM=(((MM+1)*30.6)-63)
300 DAYS=MM+DD+1:DAYS%=INT(DAYS):RDY%=DAYS%
310 YRNUMBER=YEAR-1980
320 DAYSINCE=YRNUMBER*365
330 IF YRNUMBER>0 AND YRNUMBER<6 THEN DAYSINCE=DAYSINCE+1
340 IF YRNUMBER>5 AND YRNUMBER<10 THEN DAYSINCE=DAYSINCE+2
350 IF YRNUMBER>9 AND YRNUMBER<14 THEN DAYSINCE=DAYSINCE+3
360 IF YRNUMBER>13 AND YRNUMBER<18 THEN DAYSINCE=DAYSINCE+4
370 IF YRNUMBER>17 AND YRNUMBER<22 THEN DAYSINCE=DAYSINCE+5
380 IF YRNUMBER>21 AND YRNUMBER<26 THEN DAYSINCE=DAYSINCE+6
390 IF YRNUMBER>25 AND YRNUMBER<30 THEN DAYSINCE=DAYSINCE+7
400 DAYS%=DAYS%+DAYSINCE
410 LOCATE 16,15:INPUT "Daylight Savings Time (Y/N)??? ",DL$
420 LOCATE 18,15:INPUT "What is the latitude? ",PHI
430 'PLANET CALCULATIONS
440 I1=FNRAD(I1)
450 NPLANET=(360/365.2422)*(DAYS%/T1)
460 IF NPLANET>0 AND NPLANET<360 THEN GOTO 480
470 IF NPLANET<0 THEN NPLANET=NPLANET+360:GOTO 460
475 IF NPLANET>360 THEN NPLANET=NPLANET-360:GOTO 460
480 MPLANET=FNRAD(NPLANET+E1-W1)
490 MPLANET=SIN(MPLANET)
500 LPLANET=NPLANET+((360/3.1415927#)*C1*MPLANET)+E1
510 IF LPLANET>0 AND LPLANET<360 THEN GOTO 540
520 IF LPLANET<0 THEN LPLANET=LPLANET+360:GOTO 510
530 IF LPLANET>360 THEN LPLANET=LPLANET-360:GOTO 510
540 VPLANET=FNRAD(LPLANET-W1)
550 VPLANET=COS(VPLANET)
560 RPLANET=(A1*(1-C1^2))/(1+C1*VPLANET)
570 'EARTH POSITIONAL CALCULATIONS
580 NEARTH=(360/365.2422)*(DAYS%/1.00004)
590 IF NEARTH>0 AND NEARTH<360 THEN GOTO 620
600 IF NEARTH<0 THEN NEARTH=NEARTH+360
610 IF NEARTH>360 THEN NEARTH=NEARTH-360
620 MEARTH=SIN(FNRAD(NEARTH+98.83354#-102.596403#))
630 LEARTH=NEARTH+((360/3.1415927#)*.016718*MEARTH)+98.83354#
640 IF LEARTH>0 AND LEARTH<360 THEN GOTO 670
650 IF LEARTH<0 THEN LEARTH=LEARTH+360:GOTO 640
660 IF LEARTH>360 THEN LEARTH=LEARTH-360:GOTO 640
670 VEARTH=COS(FNRAD(LEARTH-102.596403#))
680 REARTH=.9997205/(1+.016718*VEARTH)
690 PSI1=(SIN(FNRAD(LPLANET-L1))*SIN(I1))
700 PSI=FNARCSIN(PSI1)
710 YCOORD=(SIN(FNRAD(LPLANET-L1))*COS(I1))
720 XCOORD=COS(FNRAD(LPLANET-L1))
730 TCOORD=FNDEG(ATN(YCOORD/XCOORD))
740 'QUADRANT CALCULATIONS
750 GOSUB 11000
760 LPRIME=TCOORD+L1
770 IF LPRIME>360 THEN LPRIME=LPRIME-360:Q=1
780 RPRIME=RPLANET*COS(PSI)
790 IF P>2 THEN GOTO 15000
800 L3=FNRAD(LEARTH-LPRIME)
810 ACAP=FNDEG(ATN((RPRIME*SIN(L3))/(REARTH-(RPRIME*COS(L3)))))
820 LAMBDA=180+LEARTH+ACAP
830 IF LAMBDA<0 THEN LAMBDA=LAMBDA+360
840 IF LAMBDA>360 THEN LAMBDA=LAMBDA-360
850 L4=FNRAD(LAMBDA-LPRIME):LB=FNRAD(LPRIME-LEARTH)
860 BETA=ATN((RPRIME*TAN(PSI)*SIN(L4))/(REARTH*SIN(LB)))
870 LAMBDAD=FNRAD(LAMBDA):E4=FNRAD(23.441884#)
880 'ROUTINE NO. 27
890 DEC2=(SIN(BETA)*COS(E4))+(COS(BETA)*SIN(E4)*SIN(LAMBDAD))
900 DEC1=FNARCSIN(DEC2)
910 DEC=FNDEG(DEC1)
920 YCORD=((SIN(LAMBDAD)*COS(E4))-(TAN(BETA)*SIN(E4)))
930 XCORD=COS(LAMBDAD)
940 F1=FNDEG(ATN(YCORD/XCORD)):PRINT "LINE 940 F1= ";F1
950 IF F1<0 THEN F1=F1+360:PRINT "LINE 950 F1= ";F1
960 F2=F1-LAMBDA:PRINT "LINE 960 F2= ";F2
970 IF ABS(F2)>180 THEN F1=F1-180:PRINT "LINE 970 F1= ";F1
972 IF P=1 AND F1<0 THEN F1=F1+360
975 IF P=1 THEN GOTO 1010
980 IF F1<0 THEN F1=F1+360
990 TEMP=180-ABS(F2):PRINT "LINE 990 TEMP = ";TEMP
1000 IF TEMP<1 OR TEMP>-1 THEN F1=F1+180:PRINT "LINE 1000 F1= ";F1
1005 IF F1>360 THEN F1=F1-180
1010 RIGHTASCENSION=F1/15
1020 IF RIGHTASCENSION>24 THEN RIGHTASCENSION=RIGHTASCENSION-12
1030 IF Q=1 THEN RIGHTASCENSION=RIGHTASCENSION-12
1040 L6=FNRAD(LPLANET):L7=FNRAD(LEARTH)
1050 'DIST FROM EARTH
1060 P8=SQR(REARTH^2+RPLANET^2-(2*REARTH*RPLANET)*COS(FNRAD(LPLANET-LEARTH)))
1070 DISTFMEARTH=P8*93000000#
1080 'LIGHT TIME
1090 T8=P8*.1386
1100 LTHR%=INT(T8):TA=T8-LTHR%:W=TA*60:LTMIN%=INT(W):I=W-LTMIN%:J=I*60:LTSEC%=INT(J+.5)
1110 T6=S1/P8
1210 D8=LAMBDA-LPLANET
1220 D8=FNRAD(D8)
1230 'PHASE
1240 PHASE=(1/2)*(1+COS(D8))
1250 M1=(RPLANET*P8)/(B1*SQR(PHASE))
1260 'MAGNITUDE
1270 MAGNITUDE=5*(LOG(M1)/LOG(10))-27.49
1271 IF P=4 THEN MAGNITUDE=MAGNITUDE-.6
1272 IF P=5 THEN MAGNITUDE=MAGNITUDE-.6
1280 PHI=FNRAD(PHI)
1290 TB=SIN(DEC1)/COS(PHI)
1300 IF TB>1! OR TB<-1! THEN GOSUB 12800:GOTO 8000
1310 MR=FNARCCOS(TB)
1320 MR=FNDEG(MR)
1330 Z3=360-MR
1340 T4=(-(TAN(PHI))*TAN(DEC1))
1350 T4=FNARCCOS(T4)
1360 T4=FNDEG(T4):T4=T4*(1/15):RISINGST=24+RIGHTASCENSION-T4
1370 IF RISINGST>23.99 THEN RISINGST=RISINGST-24
1380 SETTINGST=RIGHTASCENSION+T4
1390 IF SETTINGST>23.99 THEN SETTINGST=SETTINGST-24
1400 GOSUB 13020
1410 PTM=(DAYS%*.0657098)-SPS#
1420 IF PTM<0 THEN PTM=PTM+24
1430 RISINGMTIME=RISINGST-PTM:IF RISINGMTIME<0 THEN RISINGMTIME=RISINGMTIME+24
1440 SETTINGMTIME=SETTINGST-PTM:IF SETTINGMTIME<0 THEN SETTINGMTIME=SETTINGMTIME+24
1450 RISING=RISINGMTIME*.99727:SETTING=SETTINGMTIME*.99727
1460 IF DL$="Y" THEN RISING=RISING+1:SETTING=SETTING+1
1470 IF RISING>23.99 THEN RISING=RISING-24
1480 IF RISING<0 THEN RISING=RISING+24:GOTO 1470
1490 IF SETTING>23.99 THEN SETTING=SETTING-24
1500 IF SETTING<0 THEN SETTING=SETTING+24:GOTO 1490
8000 LPRINT:LPRINT:LPRINT:LPRINT:LPRINT:LPRINT
8005 LPRINT TAB(25)NAM$;" DATE: ";UT;"/";DD;"/";YEAR
8010 LPRINT
8015 LPRINT TAB(30)"Equatorial Coordinates"
8016 LPRINT
8017 LPRINT STRING$(79,196)
8050 LPRINT TAB(26)"HRS/DEGREES" TAB(45)"MINUTES" TAB(60)"SECONDS"
8070 N=0:G=0
8080 IF N=1 THEN X=DEC
8090 IF N=0 THEN X=RIGHTASCENSION
8110 XT%=INT(X):XA=X-XT%:A=XA*60:B%=INT(A):C=A-B%:D=C*60:E%=INT(D+.5)
8130 IF E%=60 THEN B%=B%+1:E%=0
8150 IF B%=60 THEN XT%=XT%+1
8155 IF N=1 THEN GOSUB 14000
8165 IF N=1 THEN GOTO 8210
8170 IF N=0 THEN LPRINT TAB(5)"RIGHT ASCENSION" TAB(33)XT% TAB(47)B% TAB(62)E%
8180 LPRINT:GOTO 8230
8210 IF N=1 THEN LPRINT TAB(5)"DECLINATION " TAB(33)XT% TAB(47)B% TAB(62)E%
8230 N=N+1
8240 IF N<2 THEN GOTO 8080
8250 LPRINT:LPRINT:LPRINT
8251 LPRINT
8255 LPRINT TAB(5)NAM$;" WILL RISE AND SET AT THESE TIMES:"
8256 LPRINT
8257 LPRINT TAB(14)"HOUR" TAB(30)"MINUTES" TAB(50)"SECONDS"
8258 LPRINT
8260 GOSUB 14300
8270 LPRINT:LPRINT
8272 LPRINT STRING$(79,196)
8280 LPRINT TAB(10) "PLANETARY DATA ON EARTH AND ";NAM$
8282 LPRINT STRING$(79,196)
8290 LPRINT:LPRINT:LPRINT
8300 LPRINT USING " EARTH'S DISTANCE TO SUN: ###.############## ASTRONOMICAL UNITS";REARTH
8310 LPRINT
8320 LPRINT TAB(5)NAM$;:LPRINT TAB(15) USING "DISTANCE TO SUN: ###.##############";RPLANET;:LPRINT " AU"
8330 LPRINT
8340 LPRINT TAB(5) USING "DISTANCE FROM EARTH: ###.############## ASTRONOMICAL UNITS";P8
8350 LPRINT
8360 LPRINT TAB(5) USING "DISTANCE FROM EARTH: ###############.#### MILES";DISTFMEARTH
8370 LPRINT
8380 LPRINT TAB(5) USING "LIGHT TIME: ## HRS ## MIN ## SECS";LTHR%,LTMIN%,LTSEC%
8390 LPRINT
8400 LPRINT TAB(5) USING "MAGNITUDE: ###.#########";MAGNITUDE
8410 LPRINT
8420 LPRINT USING " PHASE: ###.#########";PHASE
8425 LPRINT
8430 LPRINT TAB(5) USING "ANGULAR SIZE: ##.######### ARC SECONDS";T6
8435 LPRINT CHR$(12);
9999 END
10000 NAM$="MERCURY"
10002 T1=.24085
10005 E1=231.2973
10010 W1=77.1442128#
10015 C1=.2056306
10020 A1=.3870986
10025 I1=7.0043579#
10030 L1=48.0941733#
10035 S1=6.74
10040 B1=1.918E-06
10050 RETURN
10100 NAM$="VENUS"
10105 T1=.61521
10110 E1=355.73352#
10120 W1=131.2895792#
10130 C1=.0067826
10140 A1=.7233316
10150 I1=3.394435
10160 L1=76.4997524#
10170 S1=16.92
10180 B1=1.721E-05
10190 RETURN
10200 NAM$="MARS"
10205 T1=1.88089
10210 E1=126.30783#
10220 W1=335.6908166#
10230 C1=.0933865
10240 A1=1.5236883#
10250 I1=1.8498011#
10260 L1=49.4032001#
10270 S1=9.359999
10280 B1=4.539E-06
10290 RETURN
10300 NAM$="JUPITER"
10305 T1=11.86224
10310 E1=146.966365#
10320 W1=14.0095493#
10330 C1=.0484658
10340 A1=5.202561
10350 I1=1.3041819#
10360 L1=100.2520175#
10370 S1=196.74
10380 B1=.0001994
10390 RETURN
10400 NAM$="SATURN"
10405 T1=29.45771
10410 E1=165.322242#
10420 W1=92.6653974#
10430 C1=.0556155
10440 A1=9.554747
10450 I1=2.4893741#
10460 L1=113.4888341#
10470 S1=165.6
10480 B1=.000174
10490 RETURN
10500 NAM$="URANUS"
10505 T1=84.01247
10510 E1=228.0708551#
10520 W1=172.7363288#
10530 C1=.0463232
10540 A1=19.21814
10550 I1=.7729895
10560 L1=73.8768642#
10570 S1=65.8
10580 B1=7.768E-05
10590 RETURN
10600 NAM$="NEPTUNE"
10605 T1=164.79558#
10610 E1=260.3578998#
10620 W1=47.8672148#
10630 C1=.0090021
10640 A1=30.10957
10650 I1=1.7716017#
10660 L1=131.5606494#
10670 S1=62.2
10680 B1=7.597E-05
10690 RETURN
11000 IF XCOORD>0 AND YCOORD>0 THEN GOSUB 11100
11005 IF XCOORD<0 AND YCOORD>0 THEN GOSUB 11200
11010 IF XCOORD>0 AND YCOORD<0 THEN GOSUB 11300
11020 IF XCOORD<0 AND YCOORD<0 THEN GOSUB 11400
11030 RETURN
11100 IF TCOORD>0 AND TCOORD<90 THEN RETURN
11105 IF TCOORD<-180 THEN TCOORD=TCOORD+360:GOTO 11100
11110 IF TCOORD<0 THEN TCOORD=TCOORD+180:GOTO 11100
11120 IF TCOORD>90 THEN TCOORD=TCOORD-180:GOTO 11100
11130 RETURN
11200 IF TCOORD>90 AND TCOORD<180 THEN RETURN
11210 IF TCOORD<0 THEN TCOORD=TCOORD+180:GOTO 11200
11220 IF TCOORD>180 THEN TCOORD=TCOORD-180:GOTO 11200
11230 IF TCOORD<90 THEN TCOORD=TCOORD+90:GOTO 11200
11240 RETURN
11300 IF TCOORD<360 AND TCOORD>270 THEN RETURN
11310 IF TCOORD<-180 THEN TCOORD=TCOORD+360:GOTO 11300
11320 IF TCOORD<0 THEN TCOORD=TCOORD+360:GOTO 11300
11330 IF TCOORD<180 THEN TCOORD=TCOORD+180:GOTO 11300
11340 IF TCOORD>360 THEN TCOORD=TCOORD-180:GOTO 11300
11350 RETURN
11400 IF TCOORD<270 AND TCOORD>180 THEN RETURN
11410 IF TCOORD<0 THEN TCOORD=TCOORD+360:GOTO 11400
11420 IF TCOORD<90 THEN TCOORD=TCOORD+180:GOTO 11400
11430 IF TCOORD>360 THEN TCOORD=TCOORD-180:GOTO 11400
11440 RETURN
12800 CLS:LOCATE 10,7:PRINT NAM$;" does not rise or set here!"
12810 RETURN
13020 MTT=UT:UT=1
13030 IF RDY%>1 THEN DTD%=1
13040 'COMPUTATION FOR SPS
13050 D8%=INT(1):F8#=D8%-1-.5
13060 J8%=-INT(7*(INT((UT+9)/12)+YEAR)/4)
13070 S8=SGN(UT-9):A8=ABS(UT-9)
13080 J9%=INT(YEAR+S8*INT(A8/7))
13090 J9%=-INT((INT(J9%/100)+1)*3/4)
13100 J8#=J8%+INT(275*UT/9)+D8%+1*J9%
13110 JD#=J8#+WT+2*1+367*YEAR
13120 IF F8#>=0 THEN 13140
13130 F8#=F8#+1:JD#=JD#-1
13140 J9#=JD#+F8#-1
13150 S5#=J9#-YT
13160 T5#=S5#/(365.25*100)
13170 R8#=XX+(ZZ*T5#)+(2.581E-05*T5#^2)
13180 SPS1#=R8#-(24*(YEAR-1900))
13190 SPS#=24-SPS1#
13195 UT=MTT
13210 RETURN
13230 END
14000 IF DEC>0 THEN GOTO 14130
14110 X=ABS(DEC):XT%=INT(X):XA=X-XT%:XT%=XT%*-1:A=XA*60:B%=INT(A):C=A-B%:D=C*60:E%=INT(D+.5)
14120 G=1
14130 RETURN
14300 N=0
14310 IF N=1 THEN X=SETTING
14320 IF N=0 THEN X=RISING
14330 XT%=INT(X):XA=X-XT%:A=XA*60:B%=INT(A):C=A-B%:D=C*60:E%=INT(D+.5)
14340 IF E%=60 THEN B%=B%+1:E%=0
14360 IF B%=60 THEN XT%=XT%+1
14390 IF N=0 THEN LPRINT TAB(5)"RISING " TAB(14)XT% TAB(30)B% TAB(50)E%
14410 IF N=1 THEN LPRINT TAB(5)"SETTING " TAB(14)XT% TAB(30)B% TAB(50)E%
14430 N=N+1
14440 IF N<2 THEN GOTO 14310
14450 RETURN
15000 L3=FNRAD(LPRIME-LEARTH)
15010 LAMBDAD=ATN((REARTH*SIN(L3))/(RPRIME-(REARTH*COS(L3))))
15020 LAMBDA=FNDEG(LAMBDAD):L4=LAMBDA+LPRIME
15030 IF L4<0 THEN L4=L4+360
15040 IF L4>360 THEN L4=L4-360
15050 LAMBDA=L4:LD=FNRAD(L4-LPRIME)
15060 BETA=ATN((RPRIME*TAN(PSI)*SIN(LD))/(REARTH*SIN(L3)))
15070 GOTO 870
EN L4=L4-360
15050